"""
封装针对cookie购物车字典数据的加解密类
"""

import pickle,base64

# 一个类如何封装：(1)、明确封装的功能 —— 方法；(2)、明确使用的数据 —— 属性
class CookieSecret(object):

    # 功能：加密
    # 参数：cookie_dict购物车字典数据
    # 返回值：pickle和base64加密后的字符串 —— 该字符串就是将来存储在浏览器cookie中的
    @classmethod
    def dumps(cls, cookie_dict):
        # (1)、使用pickle编码购物车字典数据
        data_bytes = pickle.dumps(cookie_dict)
        # (2)、使用base64编码data_bytes成字节
        base64_bytes = base64.b64encode(data_bytes) # 返回结果是字符串的字节形式
        base64_str = base64_bytes.decode()
        # (3)、返回加密字符串
        return base64_str

    # 功能：解密
    # 参数：cookie_str是加密后的购物车字符串数据
    # 返回值：解密后的购物车字典数据
    @classmethod
    def loads(cls, cookie_str):
        # (1)、字符串编码成字节
        cookie_bytes = cookie_str.encode()
        # (2)、使用base64解码cookie_bytes
        data_bytes = base64.b64decode(cookie_bytes)
        # (3)、使用pickle解码data_bytes
        cookie_dict = pickle.loads(data_bytes)
        return cookie_dict